Thực đơn
GNU_C_Library Lịch sửDự án glibc ban đầu được viết chủ yếu bởi Roland McGrath, làm việc cho Free Software Foundation (FSF) trong những năm 1980 khi còn thiếu niên.[3]
Tháng 2 năm 1988, FSF mô tả glibcgần như đã hoàn thành chức năng theo yêu cầu của ANSI C.[4] Đến năm 1992, nó đã triển khai các chức năng ANSI C-1989 và POSIX.1-1990 và công việc đang được tiến hành trên POSIX.2.[5]
Tháng 9 năm 1995 Ulrich Drepper đã có đóng góp đầu tiên của mình cho dự án glibc và trong những năm 1990 đã dần trở thành người đóng góp và duy trì cốt lõi của glibc. Drepper giữ vị trí bảo trì trong nhiều năm và cho đến năm 2012 đã tích lũy được 63% tổng số cam kết cho dự án.[6]
Đầu những năm 1990, các nhà phát triển nhân Linux đã phân nhánh glibc. Fork của họ, "Linux libc", được duy trì riêng biệt.
Khi FSF phát hành glibc 2.0 vào tháng 1 năm 1997, các nhà phát triển hạt nhân đã ngừng Linux libc do sự tuân thủ vượt trội của glibc 2.0 với chuẩn POSIX.[7] glibc 2.0 cũng có khả năng quốc tế hóa tốt hơn và dịch chuyên sâu hơn, khả năng IPv6, truy cập dữ liệu 64-bit, tiện ích cho các ứng dụng đa luồng, khả năng tương thích với phiên bản trong tương lai và mã cơ động hơn.[8]
Phiên bản Linux libc được sử dụng cuối cùng đã sử dụng tên nội bộ (soname) libc.so.5. Tiếp theo từ điều này, glibc 2.x trên Linux sử dụng soname libc.so.6[9] (kiến trúc Alpha và IA64 bây giờ dùng libc.so.6.1, thay thế). Tên file *.so thường được viết tắt là libc6 (ví dụ trong tên gói trong Debian) theo quy ước thông thường cho các thư viện.
Theo Richard Stallman, FSF không thể hợp nhất những thay đổi được thực hiện trong Linux libc thành glibc do quyền tác giả mơ hồ. Dự án GNU khá nghiêm ngặt về bản quyền và tác quyền.[10]
Bắt đầu từ năm 2001, sự phát triển của thư viện đã được giám sát bởi một ủy ban,[11] với Ulrich Drepper[12] giữ vai trò là người đóng góp và bảo trì chính. Việc thành lập ban chỉ đạo bị bao vây bởi một cuộc tranh cãi công khai vì nó được Ulrich Drepper mô tả công khai là một việc tiếp quản thù địch thất bại của Richard Stallman.[13][14]
Trong khi trước đó lưu trong kho CVS, năm 2009 glibc đã chuyển sang Git (một hệ thống kiểm soát phiên bản phân tán) trên Sourceware.
Sau những tranh cãi kéo dài xung quanh phong cách lãnh đạo của Drepper và sự chấp nhận đóng góp từ bên ngoài,[15][16] Debian đã công khai chuyển sang glibc fork EGLIBC năm 2009,[17] và quay trở lại với Debian 8.0 (Jessie) tháng 4 năm 2015.
tháng 3 năm 2012, ban chỉ đạo đã bỏ phiếu để tự giải tán và loại bỏ Drepper để ủng hộ quy trình phát triển dựa vào cộng đồng, với Ryan Arnold, Maxim Kuvyrkov, Joseph Myers, Carlos O'Donell, và Alexandre Oliva giữ trách nhiệm bảo trì GNU (nhưng không có thêm quyền ra quyết định).[18][19]
Sau sự thay đổi về bảo trì glibc, Debian và các dự án khác vốn đã chuyển sang các giải pháp thay thế đã quay lại với glibc.[20] Từ đầu năm 2014, the glibc fork EGLIBC không còn được phát triển vì "các mục tiêu hiện đang được giải quyết trực tiếp trong GLIBC".
Tháng 7 năm 2017, 30 năm sau khi bắt đầu glibc, Roland McGrath tuyên bố ra đi, "tuyên bố bản thân là người duy trì danh dự và rút khỏi tham gia trực tiếp vào dự án. Những tháng qua, nếu không phải là vài năm trước, đã chứng minh rằng bạn không cần tôi nữa ".[3]
Với phần lớn các hệ thống, các phiên bản của glibc có thể được lấy bằng cách thực thi tệp lib (ví dụ, /lib/libc.so.6).
Phiên bản | Ngày | Ghi chú | Tiếp nhận |
---|---|---|---|
0.1 – 0.6 | October 1991 – February 1992 | ||
1.0 | February 1992 | ||
1.01 – 1.09.3 | March 1992 – December 1994 | ||
1.90 – 1.102 | May 1996 – January 1997 | ||
2.0 | January 1997 | ||
2.0.1 | January 1997 | ||
2.0.2 | February 1997 | ||
2.0.91 | December 1997 | ||
2.0.95 | July 1998 | ||
2.1 | February 1999 | ||
2.1.1 | March 1999 | ||
2.2 | November 2000 | ||
2.2.1 | January 2001 | ||
2.2.2 | February 2001 | ||
2.2.3 | March 2001 | ||
2.2.4 | July 2001 | ||
2.3 | October 2002 | ||
2.3.1 | October 2002 | ||
2.3.2 | February 2003 | Debian 3.1 (Sarge) | |
2.3.3 | December 2003 | ||
2.3.4 | December 2004 | Standard for Linux Standard Base (LSB) 3.0 | RHEL 4 (Update 5) |
2.3.5 | April 2005 | SLES 9 | |
2.3.6 | November 2005 | Debian 4.0 (Etch) | |
2.4 | March 2006 | Standard for LSB 4.0, initial inotify support | SLES 10 |
2.5 | September 2006 | Full inotify support | RHEL 5 |
2.6 | May 2007 | ||
2.7 | October 2007 | Debian 5 (Lenny), Ubuntu 8.04 | |
2.8 | April 2008 | ||
2.9 | November 2008 | ||
2.10 | May 2009 | ||
2.11 | October 2009 | SLES 11, Ubuntu 10.04, eglibc used in Debian 6 (Squeeze) | |
2.12 | May 2010 | RHEL 6 | |
2.13 | January 2011 | eglibc 2.13 used in Debian 7 (Wheezy) | |
2.14 | June 2011 | ||
2.15 | March 2012 | Ubuntu 12.04 and 12.10 | |
2.16 | June 2012 | x32 ABI support, ISO C11 compliance, SystemTap | |
2.17 | December 2012 | 64-bit ARM support | Ubuntu 13.04, RHEL 7 |
2.18 | August 2013 | Improved C++11 support. Support for Intel TSX lock elision. Support for the Xilinx MicroBlaze and IBM POWER8 microarchitectures. | Fedora 20 |
2.19 | February 2014 | SystemTap probes for malloc. GNU Indirect Function (IFUNC) support for ppc32 and ppc64. New feature test macro _DEFAULT_SOURCE to replace _SVID_SOURCE and _BSD_SOURCE. Preliminary safety documentation for all functions in the manual. ABI change in ucontext and jmp_buf for s390/s390x. | Ubuntu 14.04, eglibc 2.19 used in Debian 8 (Jessie), openSUSE 13, SLES 12 |
2.20 | September 2014 | Support for file description locks | Fedora 21 |
2.21 | February 2015 | New semaphore implementation | Ubuntu 15.04, Fedora 22 |
2.22 | August 2015 | Support to enable Google Native Client (NaCl), that originally ran on x86, running on ARMv7-A, Unicode 7.0 | Fedora 23 |
2.23 | February 2016 | Unicode 8.0 | Fedora 24, Ubuntu 16.04 |
2.24 | August 2016 | Some deprecated features have been removed | Fedora 25, Ubuntu 16.10 and 17.04, Debian 9 (Stretch) |
2.25 | February 2017 | The getentropy and getrandom functions, and the <sys/random.h> header file have been added. | Fedora 26 |
2.26 | August 2017 | Improved performance (per-thread cache for malloc), Unicode 10 support | Fedora 27, Ubuntu 17.10 |
2.27 | February 2018 | Performance optimizations. RISC-V support. | Fedora 28, Ubuntu 18.04 |
2.28 | August 2018 | statx , renameat2 , Unicode 11.0.0 | Ubuntu 18.10,[21] RHEL 8.0.0,[22] Debian 10 (Buster),[23] Fedora 29[24][25] |
2.29 | February 2019 |
| Ubuntu 19.04,[27] Fedora 30[28][29] |
2.30 | August 2019 | Unicode 12.1.0, the dynamic linker accepts the --preload argument to preload shared objects, the gettid function has been added on Linux, Minguo (Republic of China) calendar support, new Japanese era added to ja_JP locale, memory allocation functions fail with total object size larger than PTRDIFF_MAX ; CVE- fixed[30] | Ubuntu 19.10,[31] Fedora 31[32] |
2.31 | February 2020 | Initial C2x standard support | Ubuntu 20.04,[33] Fedora 32[34] |
2.32 | August 2020 | Unicode 13.0, 'access' attribute for better warnings in GCC 10, i.e. to "help detect buffer overflows and other out-of-bounds accesses"[35] |
Thực đơn
GNU_C_Library Lịch sửLiên quan
GNU C Library GNU Affero General Public License GNU Parted GNU Debugger GNU Privacy Guard Gấu chó GNU TeXmacs GNU Pascal GNU FDL GNU General Public LicenseTài liệu tham khảo
WikiPedia: GNU_C_Library http://linuxmafia.com/faq/Licensing_and_Law/forkin... http://linuxmafia.com/faq/Licensing_and_Law/forkin... http://wiki.openmoko.org/wiki/OpenMoko http://ecos.sourceware.org/ml/libc-alpha/2002-01/m... https://csclub.uwaterloo.ca/~dtbartle/opensolaris/ https://github.com/haiku/haiku/tree/master/src/sys... https://www.linkedin.com/in/ulrichdrepper https://www.linux.com/archive/feature/3874 https://udrepper.livejournal.com/7326.html https://access.redhat.com/documentation/en-us/red_...